我的技术小结-2025
目录
前言
2025年已经是我从事软件开发行业的第四个年头了,毕业之后,感觉每一年世界的变化都很大,今年也不例外,我打算把今年对于软件技术的所思所感记录于此,整理为一篇博客。
AI
今年最热门的依然是人工智能,无论是网页广告还是科技公司的投资,眼花缭乱的语言、图片、视频、编码的 AI 大模型,自动生成代码的 IDE,这种猛烈的冲击下,都让我感觉时间流逝的越来越快。我印象里至少在 2 年前,AI 还是傻乎乎的,但它的进化速度远远超过了我的想象,从过去的漏洞百出,到现在能产出生产级别的影像和代码,不可不谓之奇迹。
一个新技术的产生和发展的初期一定是野蛮生长的,按照政府的效率,政策和制度的完善不可能赶得上科技发展的速度,普通人在这种背景下,除了被动接受就是陷入某些陷阱。技术从业者的论坛里,似乎也渐渐的不再关心技术,就像 80 年代的“read the fucking manual(RTFM)”,再到后来千禧年的“google/baidu 一下”,现在时代的口号变成了:“GPT怎么说?”。除了少数人是享受或者关心编码的过程,大部分人只是单纯的为了解决问题,并不在乎问题是如何解决的,换句话来说,逐利的背景下,我们是只关心结果的。
这种工具的进化不会扭转文化性的缺陷,反而会放大过去已存在的所有问题,就像 Claude Code is a Slot Machine 提到的,AI 工具就像是某种老虎机,间歇式的奖励,奖励之间的等待,放大了懒惰与暴躁的情绪,渐渐丢下“不重要”的注意力和思考时间。
工作模式与卢德主义
19 世纪英国民间诞生了一种自发性的组织,打砸烧毁纺织机器,他们认为:永远不知疲倦的机器会取代他们的工作,传统旳手艺在机器面前,显得有些“滑稽”,并不是所有人都是非遗大师,也不是所有人都是顶尖棋手,在技术发展的浪潮下,大部分只是以简单劳动换取生计的工人们恐惧于未来的失业与饥饿。尽管在后来看来,工业化的发展催生了更多的岗位,创造了更多的社会价值。但站在劳工的个人角度来感受下,时代车轮前进时的掉落的一粒沙子就是压倒一辈子的大山。
21 世界的敲着键盘的程序员,从某些角度来看和那些踩着缝纫机的纺织工人是没啥两样的,有一点不一样的是,现在并没有太多人反对 AI 结对编程,更别提“打砸烧毁”机器,我们恨不得购买更多的显卡和 API tokens 来让 AI 为我们工作。可以预见在不远的将来,除了创意性的工作(绘画,影视,音乐,书籍,编码,新闻等等)会交给 AI 之外,配置了 AI 的人形机器人,会开着车,送着快递和外卖。
如果需求或者产业没有变革的情况下,工具的不断进化,会让个人在工作中的扮演的角色越来越细微或者说无能,也就会让更多的人面临失业的风险,如果在国家政府不干预的情况下,个人只能逐渐沦陷为技术发展下的炮灰。软件工程也是工程,既然是工程那么就脱离不了工程的性质,石器时代捏的陶器罐子和工业时代下生产的金属容器,虽然需求没有变,但是工业时代下,生产的商品更加耐用和牢靠(当然,前提是如果厂家愿意的话,不搞什么计划性报废),生产单个商品的风险更加可控,单个商品在极致优化下的耗时和耗材更少。
程序类相关的工作有个很不一样的特质,就是为了满足懒惰和可靠性,我们力求一切都是全自动化的,就像是《攻壳机动队S.A.C.》里面,有一集叫“全自动资本主义¥€$”,这是资本主义角度的终极目标,编写一个程序预测市场变动,自动化投资和赚钱。这里面最大的矛盾就是,如果需求不大幅增加的前提下,全自动化的工作最终会让编写全自动化的程序员丢掉工作。这种矛盾在过去不那么明显,是由于程序员的代码生产力“低下”(相对于现在而言),编写一个全自动化的工作短则几天,长则数月,在这个过程中也许需求早就频繁变更数次了,自然也就不会有失业的风险。
现在工具的进步导致的生产力大幅度提高,但是需求总量并没有变大,借用《大佛Plus》里的一句听起来就很讽刺的句式来表达:现在已经是太空时代了,人们可以搭乘太空船到达月球,但是人们依然为了生计和贷款而发愁(最后半句是我改编了)。这看起来就像是赛博时代的前兆——极其发达的科技生产力,但是却对应着人们异化的,匮乏的精神世界,扭曲的社会制度,极其明显的贫富差距。
技艺与自我价值
AI 对于个人而言,我更多的是体会到一种无力感,就像学生时代,你的某个朋友非常聪明,你需要花一天解决的问题,他可能瞟一眼,就能知道结果了。这时候努力得到结果所带来的兴奋感会被消解,让学生不要抄答案是很难做到的,因为社会就是功利性的社会,很难要求在这种环境下成长的学生们都能保持自觉和自律,因为所有的方法、策略和手段最终的目的都是那个望眼欲穿的现实结果,并非理想中的本质。
大人的世界里总是充满了表里不一的内容,虽然大肆宣传工匠精神或者劳动最光荣之类的,但实际上几乎所有人都贪恋捷径和偶然的机遇,这是很难改变的一种事实。自我价值被绑定在了社会高度统一的以地位和金钱为结果导向的目标上,学习技艺和实现自我价值就成了一种玩笑。
回到糟糕的现实
我们现在很发达么?是的,似乎是很发达,听说,咱们国家到了 2030 年的时候,就要实现载人登月了!各个行业在世界上那可都是领先水平(至少新闻媒体是这么讲的)。
但我并没有觉得时代和科技的发展,让世界变得更好,可能更糟糕也说不定。
从世界的角度来看:
- 贫富差距依然很大,阶层固化趋势严重。
- 世界战争不断,流离失所的人们看不到什么希望。
- 无所不在的娱乐和广告占据了大部分人的碎片时间。
- 技术在进步,但人们似乎需要更多的劳动时间才能换取和之前一样的酬劳。
- 社会变得更加冷漠,人人自危,焦虑、抑郁和孤独症蔓延在热闹繁华的社交网络之中。
- 人们依然将目光聚焦在过去的封建文化,勾心斗角,传统价值和现代观念冲突不断。
- 就业形势严峻,人们渴望着得到千军万马过独木桥后的那一份铁饭碗工作,但是大部分都是各行业的普通从业者,面临着被机器人替代的风险。
技术进步带来的是不断增强的手段和方法,而人类本身的幸福感和意义感在逐渐消解,人类在提升“智慧、共识、意义与善意”上的速度远远落后技术进步的速度。
而从我所处的行业来看(我的一个很狭隘的视角):
- 为了追逐融资、流量、资本回报与短期利益,大部分的新技术平台金玉其外,败絮其中。
- 技术人员过度依赖新的 AI 工具,极大的加快了开发速度,但在质量上却不尽如人意,习惯性的提问 AI 和抄作业,而非理解系统本身,导致后期维护困难。
- 新的技术,新的工具,并没有让行业更加稳定(反而更混乱)。
- 随处可见的系统故障和服务中断(每个月,每个大公司都有类似的大新闻)。
- 基础设施软件极其落后,沉疴积弊,没有跟上技术范式的进步,软硬件老龄化严重。
- 无脑堆砌大而全,冗余的新框架,只是为了看起来庞大而精致,架构的复杂性远超业务本身。
- 大而全的复杂框架,配置的却是能跑就行的运维技术,缺乏严谨的设计和验证。
总的来说,软件行业整体陷入“更快、更亮眼、更吸金”的循环,而不是向着正确、可靠和长期性的目标靠近。
所以,2025 了,满是广告的,运行缓慢的,消耗内存巨大的,占用空间巨大的,页面花哨繁冗的,功能设计复杂而不人性化的,需求不断变更的,缺乏稳定运行能力的软件充斥着中国市场的各个角落。
国内的软件行业,除了技术之外的部分(对,大部分都不是技术本身的问题),依然烂透了。
语言
刚毕业的时候,我也曾执着于语言的性能或者说各种语言的语法糖,就像论坛上,很多人会以近乎宗教的性质来看待编程语言。
论坛上议论语言优劣的帖子不计其数,吹捧的,贬低的,痛斥的。它们大部分都有一个特点,以偏概全,在不考虑实际的情况下,片面的评价一个语言的好与坏,比如从某个特殊场景下的性能高低,某个语法糖,甚至该语言岗位薪资的高低,使用人数多少来评价,但这些并不能决定一个语言的好坏。
后来工作了几年后,我才逐渐发现,在 排行榜 上的语言没有特别糟糕的,它们在大部分的场景下都能完成通用的任务,以 web 领域举例,很多问题到最后发现都是业务问题,需求挖掘问题,数据建模和数据库设计问题,团队协作和开发流程的问题,几乎很少会碰到语言的性能边界。换句话说,没有特别糟糕的语言,只有比较菜的程序员。比较不同的编程语言就像是比较不同的国家语言一样(你可以用不同国家的语言写小说,至于小说写的好坏,很少人会说和语言本身相关)。
每个语言都有自己擅长的地方,就像是你不可以在一个 CPU 密集型的任务里面使用 CPython,你也用不着在一个 IO 密集型的应用里纠结那 1% 的性能优化,你不必在一个简单脚本的 JSON 解析里面,用冗长的 Java 代码来折磨自己,在没有成熟团队的支持下,一些较小规模的项目,也不要硬上分布式和微服务,而对于业务复杂,抽象和建模比较重要的场景下,也不要用过程式的代码堆出一座巨大的屎山,折磨阅读你代码的每一个人。
一个合格的工程师是在面对巨龙的时候,掏出华丽的屠龙宝刀,在面对砧板的时候,掏出朴实的菜刀。我们能做的就是尽可能熟悉更多的方案,在不同的场景下,作出针对性的最优解,要为某一个具体的业务场景,以较低的人力成文,开发成本,挑选合适的语言、框架以及架构,完成项目业务所要求的功能性需求和非功能性需求。
如果是在工作里,那么语言和框架是由领导层决定,个人没有机会挑选,但是在业余时间,语言和框架甚至开发流程都可以自己随意挑选,软件开发者更加注意的应该是软件工程层面的思想,毕竟框架常变,算法常新,思想永恒。
不同的语言面对同样的问题(这些问题不随语言的变更而消失,它们似乎永远存在),语言的社区或者设计者会提出不同的解决方案,无论在为企业还是个人项目挑选方案的时候,都要关心下面的问题:
- 业务场景会很复杂么,在保证开发质量的前提下,会碰到语言的边界么(GC,并发场景)
- 社区是否活跃,常用库是否齐全可靠,以及自己造轮子的成本
- 这个语言如何解决打包,分发,部署,依赖地狱等问题
- 这个语言的工程化实践如何?市面上是否有这个语言开发的主流项目可以参考
- 语言的优点和缺点分别是什么,别的语言如何解决的?
小结
2021-2025,技术有些小小的进步,但是依然没有做出一个令自己非常满意的完整的作品,主要的原因是对技术细节依然缺乏更加深刻的理解。